package com.yisu.expressway.api.core.mapper;

import com.yisu.expressway.api.domain.request.GoodsInfoRequest;
import com.yisu.expressway.api.domain.request.ModuleDataRequest;
import com.yisu.expressway.api.domain.vo.CategoryGoodsVo;
import com.yisu.expressway.api.domain.vo.GoodsDetailVo;
import com.yisu.expressway.ewf.entity.GoodsArchives;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface GoodsArchivesMapper {
    int deleteByPrimaryKey(Long goodsNo);

    int insert(GoodsArchives record);

    GoodsArchives selectByPrimaryKey(Long goodsNo);

    int updateByPrimaryKeyWithBLOBs(GoodsArchives record);

    int updateByPrimaryKey(GoodsArchives record);

    /**
     * 通过分类获取分类推荐商品列表
     * @param moduleDataRequest 分类编号
     * @return 分类列表
     */
    List<CategoryGoodsVo> getRecommendGoodsGoodsArchivesByCategoryCode(ModuleDataRequest moduleDataRequest);

    /**
     * 通過商品編號，商品規格編號，分類編號獲取商品详情
     * @param goodsInfoRequest
     * @return
     */
    GoodsDetailVo getGoodsDetailInfo(GoodsInfoRequest goodsInfoRequest);

    /**
     * 通过分类获取分类推荐商品列表
     * @param goodsInfoRequest 分类编号
     * @return 分类列表
     */
    List<CategoryGoodsVo> getGoodsListByCategoryCode(GoodsInfoRequest goodsInfoRequest);

    /**
     * 通过分类路径获取其下所有分类商品
     * @param goodsInfoRequest 含分类路径信息
     * @return 分类列表
     */
    List<CategoryGoodsVo> getGoodsListByNodePath(GoodsInfoRequest goodsInfoRequest);

    /**
     * 通过关键字检索商品列表
     * @param goodsInfoRequest 检索关键字信息
     * @return 商品列表
     */
    List<CategoryGoodsVo> getGoodsListByQuery(GoodsInfoRequest goodsInfoRequest);
}